Barometric Sensing of Arm Position in a Pointing Controller System

ABSTRACT

A pointing controller enables interaction with virtual objects in a virtual or augmented reality environment. The pointing controller comprises a form factor that enables it to be securely positioned in the user&#39;s fingers during a pointing gesture. The pointing controller tracks a pointing direction in three-dimensional space based on motion of the pointing controller. The pointing controller furthermore includes one or more control elements such as buttons or touch interfaces to enable additional interactions.

BACKGROUND Technical Field

This disclosure relates to controlling interactions with a virtuallyrendered environment, and more specifically, to controlling interactionsusing a pointing controller.

Description of the Related Art

In augmented reality and virtual reality environments, a display devicepresents digital content that may include virtual objects. Conventionalcontrollers for interacting with virtual objects in these environmentsare often bulky and unnatural to use. As a result, the user's experienceinteracting with the virtual environments may be unsatisfactory.

SUMMARY

A method controls interactions with virtual objects using a pointingcontroller. Sensor data is obtained from an inertial measurement unit ofthe pointing controller. Movement of a pointing vector is trackedthrough a three-dimensional virtual space based on the inertialmeasurement unit and a stored arm model. An intersection of the pointingvector with coordinates occupied by a virtual object in thethree-dimensional virtual space is detected to place the virtual objectin a selected state. A first interaction with the pointing controller isdetected while the virtual object is in the selected state. The virtualobject is placed in a grabbed state in response to the firstinteraction. A position of the virtual object is caused to track themovement of the pointing controller while the virtual object is in thegrabbed state. A second interaction with the virtual object is detectedwhile the virtual object is in the grabbed state. The virtual object isplaced in a free state in response to the second interaction. Thevirtual object is caused to stop tracking movement of the pointingvector in response to the second interaction.

In an embodiment, detecting the first intersection comprises generatinga pointing cone having a central axis aligned with the pointing vector,an origin proximate to a location of the pointing controller, and aradius that increases with distance from the origin of the pointingvector. The intersection is detected with the pointing vector responsiveto the pointing cone overlapping with coordinates occupied by thevirtual object.

In an embodiment, the first interaction comprises a pinching gesture.The pinching gesture is detected in response to detecting a touch withan inter-digit button of the pointing controller on a first side of thering controller.

In an embodiment, the second interaction comprises a release of thepinching gesture. The release of the pinching gesture is detected inresponse to detecting a release of the touch with the inter-digit buttonof the pointing controller.

In an embodiment, a swiping gesture on a slider control interface of thepointing controller is detected while the virtual object is in thegrabbed state. The virtual object is caused to move along the pointingvector in a direction associated with the swiping gesture.

In an embodiment, tracking the movement of the pointing vector comprisesdetecting whether the pointing controller is indoors or outdoors, andadjusting parameters of the arm model depending on whether the pointingcontroller is indoors or outdoors.

In an embodiment, tracking the movement of the pointing vector comprisesdetecting whether a user of the pointing controller is sitting orstanding, and adjusting parameters of the arm model depending on whetherthe user of the pointing controller is sitting or standing.

In an embodiment, tracking the movement of the pointing vector comprisesdetecting a fatigue level associated with a user of the pointingcontroller, and adjusting parameters of the arm model depending on thedetected fatigue level.

In another embodiment, a non-transitory computer-readable storage mediumstores instructions that when executed by a processor cause theprocessor to perform the above-described methods.

In another embodiment, a computing device comprises a processor and anon-transitory computer-readable storage medium storing instructionsthat when executed by a processor cause the processor to perform theabove-described methods.

In another embodiment, a pointing controller comprises a ring structuredto be worn on a first finger. The ring has a concave outer surface on afirst side of the ring shaped to substantially conform to a secondfinger adjacent to the first finger. An inter-digit button is on theconcave outer surface of the ring. The inter-digit button comprises aforce sensor to detect squeezing of the ring between the first andsecond fingers. A slider interface is on a convex surface on a secondside of the ring opposite the concave surface. The slider interfacecomprises a touch sensor to detect a touch to the slider interface by athird finger.

In an embodiment, the ring comprises a flat printed circuit boardinternal to the ring having an interior cutout, a riser printed circuitboard internal to the ring substantially perpendicular to the flatprinted circuit board, and a touch printed circuit board internal to thering perpendicular to the flat printed circuit board and positionedinterior to the convex surface of the second side of the ring. The touchprinted circuit board comprises the touch sensor.

In an embodiment, a flexible cable is coupled to the touch printedcircuit board. The flexible cable includes the force sensor positionedinterior to the concave outer surface of the first side of the ring.

In an embodiment, the flat printed circuit board comprises a powersub-system, a haptic driver, a vibration motor, and an inertialmeasurement unit mounted thereon.

In an embodiment, the riser printed circuit board comprises a wirelessinterface, an output device, and an interconnect for the sliderinterface.

In another embodiment, an augmented reality system enables interactionwith virtual objects. The augmented reality system comprises a displaydevice that displays one or more virtual objects and a pointingcontroller that controls a pointing vector for interacting with the oneor more virtual objects as described above.

In another embodiment, a pointing controller is structured to be heldbetween a first and second finger. A chassis has a top plate and abottom plate in substantially parallel planes. A first finger pad isbetween the top plate and the bottom plate. The first finger padcomprises a first concave surface on a first side of the pointingcontroller. The first finger pad is structured to partially encircle thefirst finger. A second finger pad is between the top plate and thebottom plate. The second finger pad comprises a second concave surfaceon a second side of the pointing controller opposite the first side. Thesecond finger pad is structured to partially encircle the second finger.An inter-digit button is between the first finger pad and the secondfinger pad. The inter-digit button comprises a force sensor to detectsqueezing of the pointing controller between the first and secondfingers. A slider interface is integrated with the first parallel plate.The slider interface comprises a touch sensor to detect a location of atouch on the first parallel plate.

In an embodiment, a connecting member is centered along an axissubstantially perpendicular to the parallel planes of the top plate andthe bottom plate. The connecting member joins the top plate and thebottom plate by respective curved surfaces on opposite sides of theaxis. The curved surfaces correspond to the first and second fingerpads.

In an embodiment, an inertial measurement unit detects a change inposition or orientation of the pointing controller.

In an embodiment, the first plate comprises a printed circuit boardinterior to the chassis and includes electronics of the pointingcontroller.

In an embodiment, the second plate comprises a battery and a hapticmotor.

In another embodiment, an augmented reality system enables interactionwith virtual objects. The augmented reality system comprises a displaydevice that displays one or more virtual objects and a pointingcontroller that controls a pointing vector for interacting with the oneor more virtual objects as described above.

BRIEF DESCRIPTIONS OF THE DRAWINGS

The disclosed embodiments have other advantages and features which willbe more readily apparent from the following detailed description of theinvention and the appended claims, when taken in conjunction with theaccompanying drawings, in which:

FIG. 1 illustrates an example embodiment of a digital display system.

FIG. 2 illustrates an example embodiment of a pointing controller forthe display device.

FIG. 3 illustrates an example embodiment of a display device.

FIG. 4 illustrates an example embodiment of a control processing modulefor processing interactions from a pointing controller with the displaydevice.

FIG. 5 illustrates an example embodiment of a process for controlling auser interface in a virtual environment based on actions detected on apointing controller.

FIGS. 6A-E graphically illustrate examples of interactions with avirtual object using a pointing controller.

FIG. 7 illustrates an example embodiment of a pointing controller with aring form factor.

FIG. 8 illustrates an example embodiment of an internal layout of apointing controller with a ring form factor.

FIG. 9 illustrates an example embodiment of an internal housing for apointing controller with a ring form factor.

FIG. 10 illustrates an example use of a pointing controller with a formfactor for grasping between adjacent fingers.

FIG. 11 illustrates an example structure of a pointing controller with aform factor for grasping between adjacent fingers.

FIG. 12 illustrates an example embodiment of an internal layout for apointing controller with a form factor for grasping between adjacentfingers.

FIG. 13 illustrates an example embodiment of a docking station for apointing controller.

DETAILED DESCRIPTION

The figures and the following description relate to preferredembodiments by way of illustration only. It should be noted that fromthe following discussion, alternative embodiments of the structures andmethods disclosed herein will be readily recognized as viablealternatives that may be employed without departing from the principlesof what is claimed.

Reference will now be made in detail to several embodiments, examples ofwhich are illustrated in the accompanying figures. It is noted thatwherever practicable similar or like reference numbers may be used inthe figures and may indicate similar or like functionality. The figuresdepict embodiments of the disclosed system (or method) for purposes ofillustration only. One skilled in the art will readily recognize fromthe following description that alternative embodiments of the structuresand methods illustrated herein may be employed without departing fromthe principles described herein.

FIG. 1 is a block diagram of a digital display system 100, according toone embodiment. The digital display system 100 includes a display device110 and a pointing controller 120, and a docking station 140. Thedisplay device 110 and the pointing controller 120 may be connected viaa communication link 130. In alternative configurations, differentand/or additional components may be included in the digital displaysystem 100.

The display device 110 comprises a computer device for processing andpresenting digital content such as audio, images, video, or acombination thereof representative of a virtual environment in athree-dimensional space. The display device 110 may comprise a virtualreality display device, an augmented reality display device, or a mixedreality display device. The display device 110 may be embodied, forexample, as a head-mounted apparatus having an integrated display or aremovable display such as a smartphone or tablet. In alternativeembodiments, the display device may comprise a generic display devicesuch as a smartphone, tablet, or display screen that is not necessarilyhead-mounted. In an augmented reality application, the display device110 enables presentation of information and/or virtual objects togetherwith a viewer's view of the real world. This overlay may be implemented,for example, through a semi-transparent display that enables the user toview the rendered presentation concurrently with a real world view, aprojection system that projects virtual objects or information onto thereal world view, or a camera feed that captures the real world view,combines it with the overlaid presentation, and presents the combinedview to the user via a display. In a virtual reality environment, thedisplay device 110 presents a virtual scene that is completely renderedwithout combining aspects of the real world environment.

The display device 110 communicates with the pointing controller 120 viathe communication link 130 and manages presentation of the digitalcontent based on interactions received from the pointing controller 120.Furthermore, the display device 110 may communicate feedback signals tothe pointing controller 120 related to the content presented on thedisplay device 110 or in response to control signals from the pointingcontroller 120. An embodiment of a display device 110 is described infurther detail below with respect to FIG. 3 .

The pointing controller 120 comprises a control device for controllingthe presentation of digital content on the display device 110. In anembodiment, the pointing controller 120 has a ring-shaped form factor toenable it to be worn on a finger such as the index finger, asillustrated in FIG. 7 . Alternatively, the pointing controller 120 mayhave a form factor that enables it to be grasped between two adjacentfingers, as illustrated in FIG. 10 . In other embodiments, the pointingcontroller 120 may comprise a band form factor enabling it to be worn onthe hand or wrist. In another embodiment, the pointing controller 120may comprise a knuckle duster that is worn across multiple fingers.

The pointing controller 120 includes various sensors and controlinterfaces to capture motion of the pointing controller 120 and toreceive inputs from a user wearing the pointing controller 120. Forexample, the pointing controller 120 may capture human gestures such aspointing or waving and may capture interactions with control elements onthe pointing controller 120. Beneficially, the pointing controller 120enables a user to interact with the digital content in the virtualenvironment in a natural way. For example, a user may perform actionswith objects in the three-dimensional space of the virtual environmentsuch as pointing at virtual objects to select them, performing apinching gesture to grab virtual objects, and moving virtual objectsaround in the virtual environment by motion of the hand. Additionally,the user may access and navigate a menu through simple gestures. Theform factor of the pointing controller 120 provides a small andlightweight controller that is intuitive to use and does not detractfrom the experience interacting with the virtual environment. Anembodiment of a pointing controller 120 is described in further detailbelow with respect to FIG. 2 .

The communication link 130 comprises a wireless communication link toenable communication between the display device 110 and the pointingcontroller 120. For example, the communication link 130 may comprise aBluetooth link, a Bluetooth Low Energy link, a WiFi link, or otherwireless link. The communication link 130 may comprise a direct (e.g.,peer-to-peer) communication channel between the pointing controller 120and the display device 110 or may include an intermediate network (e.g.,a local area network, a wide area network such as the Internet, or acombination thereof) that routes communications between the pointingcontroller 120 and the display device 110 through one or moreintermediate devices (e.g., one or more network switches, routers, orhubs).

The docking station 140 couples with the pointing controller 120 tocharge a battery of the pointing controller 120. In an embodiment, thedocking station 140 is a portable device having a recess structured tomate with the shape of the pointing controller 120 in order to securelycouple with the ring controller 120. The docking station 140 may bestructured to protect the pointing controller 120 against dirt, liquids,shock or other environmental hazards when the pointing controller 120 iscoupled with the docking station 140.

In various embodiments, the docking station 140 may securely couple withthe pointing controller 120 using one or more securing mechanisms suchas, for example, a friction fit mechanism in which the pointingcontroller 120 is secured against rigid or compressible walls (e.g.,dense foam or rubber) of the docking station 140, clips made of aflexible material, a lid with hinge and catch (mechanical or magnetic),a lid that slides over the docked ring controller in a matchbox-style,permanent magnets within the docking station 140 and the pointingcontroller 120, small suction cups that make contact with a flat face ofthe pointing controller 120, tight walls that cause retention of thepointing controller 120 via a vacuum effect (possibly with a valve torelease the vacuum to allow user to remove ring from dock easily), or acombination thereof.

The docking station 140 includes a battery and a wireless or wiredcharging circuit to transfer power to the battery of the pointingcontroller 120. The battery of the docking station 140 may be chargedfrom a conventional power source using a cable such as a USB C cable. Inan embodiment, the docking station 140 may include spring-loaded pinsthat couple with two or more contacts on the outer surface of thepointing controller 120 to provide a connection for providing power fromthe docking station pointing to the ring controller 120. The contactpoints may be part of a dedicated charging interface or could beincorporated in to the visual design of the pointing controller 120 inorder to visually disguise their purpose. Alternatively, the dockingstation 140 may comprise an inductive transmit coil and associatedcircuitry that couples with an inductive receive coil within thepointing controller 120 to provide power to the pointing controller 120.In another embodiment, the docking station 140 may comprise capacitiveparallel plates that couple with plates on the pointing controller 120to provide power from the docking station 140 to the pointing controller120 via capacitive power transfer.

Optionally, the docking station 140 may also provide an intermediateinterface to enable a connection between the pointing controller 120 anda computer to enable tasks such as performing firmware upgrades ordownloading diagnostic information.

FIG. 2 is a block diagram illustrating an example embodiment of apointing controller 120. In an embodiment, the pointing controller 120comprises a control unit 210, a state sensing unit module 220, controlelements 230, a power sub-system 240, a wireless interface 250, andoutput devices 260. In alternative embodiments, the pointing controller120 comprises additional or different components.

The state sensing module 220 comprises an electronic device forcapturing data that enables sensing of a state of the pointingcontroller, which may include, for example, position, orientation,motion, environmental conditions, or other information about the stateof the pointing controller 120. For example, in one embodiment, thestate sensing module 220 may comprise a six degree of freedom (6 DOF)inertial measurement unit (IMU) having a gyroscope for sensingorientation or angular velocity and an accelerometer for sensingacceleration. In another embodiment, the state sensing module 220 maycomprise a nine degree of freedom (9 DOF) IMU that includes a gyroscopeand accelerometer as described above and furthermore includes amagnetometer for detecting a magnetic field (e.g., the magnetic field ofthe earth). The magnetometer may be utilized as a compass to detect anorientation of the pointing controller 120 relative to the geographiccardinal directions. The IMU may furthermore process data obtained bydirect sensing to convert the measurements into other useful data, suchas computing a velocity or position from acceleration data.

In another embodiment, the state sensing module 220 may comprise one ormore cameras that captures images of the environment suitable fortracking position and orientation of the pointing controller 120 andcorrecting for any drift that may have accumulated in the IMU data.Here, image data may be processed using a scale-invariant featuretransform (SIFT) algorithm and a pre-existing map of the space, usingsimultaneous localization and mapping (SLAM) techniques, usingspecifically crafted tracking markers visible by the camera, or usingother image-based tracking techniques. A tracking algorithm for derivingthe position and orientation of the pointing controller 120 based on thecaptured images may be performed on the pointing controller 120 itselfor the images may be provided to the tracking device 110 for processingin order to reduce power consumption of the pointing controller 120.

In another embodiment, the state sensing module 220 may comprise a radiofrequency (RF) transceiver that detects beacons from anchor devices atknown positions within the environment or from the tracking device 110.Accurate position within the three-dimensional space can be computedusing triangulation techniques based on time-of-flight of various beaconsignals or computed from the received signal strength indication (RSSI)from the array of anchor devices.

In another embodiment, the state sensing module 220 may include aBluetooth directional finding module that obtains a position of thepointing controller 120 relative to the tracking device 110 or otherexternal device (e.g., using an array of antennae in the pointingcontroller 120, tracking device 110, or both to determine a direction ofthe radio waves).

In an embodiment, the state sensing module 220 may comprise a barometricsensor that measures atmospheric pressure. A height of the pointingcontroller 120 may be estimated based on the detected pressure asdescribed in further detail below.

In an embodiment, the state sensing module 220 may utilize Bluetoothdirectional finding to obtain a position of the pointing controller 120relative to the tracking device 110 (e.g., using an array of antennae inthe pointing controller 120, tracking device 110, or both to determine adirection of the radio waves) as described in further detail below.

In further embodiments, the state sensing module 220 may comprise anultrasonic pulse transmitter and/or a microphone that may be used todetermine an acoustic time of flight representing a distance between thepointing controller 120 and the tracking device 110 or other referencedevice as described in further detail below.

In another embodiment, the state sensing module 220 may be omittedentirely, and alternative techniques may be used to determine a pointingdirection of the pointing controller 120. For example, in place of thestate sensing module 220 an infrared (IR) module (not shown) may beincluded that emits an IR signal detectable by receivers that areintegrated with or attached onto (e.g., as stick-on, low-cost, low powerdevices) the smart device 140 or proxy object.

The control elements 230 include one or more controls for detectingcontrol inputs from a user. The control elements 230 may include, forexample, a touch sensor (e.g., a capacitive touch sensor), other sensorsor transducers, or physical buttons, dials, switches, or other controlmechanisms. In a particular embodiment, the control elements 230 includea slider control interface 232 and an inter-digit button 234. In otherembodiments, different or additional control elements 230 may beemployed.

The slider control interface 232 comprises a touch-sensitive padaccessible by a user's thumb or other finger. The touch-sensitive padmay comprise an array of sensing elements that detect changes incapacitance or resistance occurring in response to a touch, therebyenabling the touch-sensitive pad to detect the presence or absence of atouch and a location of touch within the area of the pad. In someembodiments, the touch-sensitive pad may additionally include touchforce sensors to enable sensing of the force applied by the touch. Auser may interact with the slider control interface 232 by performingvarious gestures such as tapping or swiping with the thumb or otherfinger that control functions of the pointing controller 120 or thedisplay device 110 as will be described in further detail below. Swipingmay be performed in a forward or backward direction along an axis of afinger (e.g., parallel to the pointing direction), along an axissubstantially perpendicular to the axis of the finger (e.g.,perpendicular to the pointing direction), or in a circular motion in aclockwise or counterclockwise direction. In the case of a pointingcontroller 120 having a ring form factor (e.g., the form factor of FIG.7 ) and worn on an index finger, the slider control interface 232 may bepositioned on a side of the pointing controller 120 adjacent to thethumb. Alternatively, in the form factor of FIG. 8 . the slidercontroller interface 232 may be positioned on a bottom side of thepointing controller 120 on the surface running across the bottom of theindex and middle fingers.

The inter-digit button 234 may comprise a touch-sensitive and/orpressure-sensitive pad positioned such that it can be selected bysqueezing two fingers together. For example, in the ring form factor ofFIG. 7 , the inter-digit button 234 may be on a side of the ring betweenthe index finger and middle finger when the ring is worn on the indexfinger. Alternatively, in the form factor of FIG. 8 , the inter-digitbutton 234 may be on an interior of the curved surface such that it isadjacent to the side of the index finger or the middle finger when thepointing controller 120 is held between the index and middle fingers. Inan embodiment, the inter-digit button 234 comprises a force-sensitiveresistor that detects a force applied to the touch-sensitive pad.Alternatively, the inter-digit button 234 may operate similarly to thetouch-sensitive pad of the slider controller interface 232 discussedabove. Due to its placement, the inter-digit button may be usedprimarily to detect a “pinching gesture” in which the middle finger andthe index finger (or other pair of adjacent fingers) are pressed towardseach other with at least a threshold pressure applied to thetouch-sensitive and/or pressure-sensitive pad of the inter-digit button.The pinching gesture or other gestures with the inter-digit button 234may control various actions of the pointing controller 120 or thedisplay device 110 as will be described in further detail below.

The power sub-system 240 stores and supplies power to the pointingcontroller 120. For example, the power sub-system 240 may comprise abattery, a charging circuit for charging the battery, one or morevoltage regulators to control the voltage supplied to other componentsof the pointing controller 120. In an embodiment, the power sub-system340 may control the pointing controller 120 to switch between differentpower modes (e.g., a full power mode, a low power mode, and a sleepmode) in order to utilize the battery efficiently.

The wireless interface 250 communicates wirelessly with the displaydevice 110 via the communication link 130. In an embodiment, thewireless interface 250 may comprise for example, a Bluetooth interface,a Bluetooth low energy interface, a WiFi link, or other wirelessinterface. The wireless interface 250 may communicate directly with thedisplay device 110 via a peer-to-peer connection or may communicate withthe display device 110 via one or more intermediate devices over a localarea network, a wide area network, or a combination thereof. In anembodiment, the wireless interface 250 may furthermore communicate withdifferent devices other than the display device 110 such as, forexample, a mobile device, a network server, an internet-of-things (IoT)device, or other computing device.

The output devices 260 include various devices for providing outputsfrom the pointing controller 120 in response to control signals from thedisplay device 110 or directly in response to actions on the pointingcontroller 120. The output devices 260 may include, for example, ahaptic feedback device (e.g., a linear resonant actuator or eccentricmass vibration motor), one or more light emitting diodes (LEDs), or anaudio output device.

The control unit 210 processes inputs from the state sensing module 220,control elements 230, power sub-system 240, and wireless interface 250to control the various functions of the pointing controller 120. In anembodiment, the control unit 210 comprises a processor and anon-transitory computer-readable storage medium that stores instructionsthat when executed by the processor causes the processor to carry outthe functions attributed to the controller 210 described herein.Alternatively, or in addition, the control unit 210 may comprise digitallogic embodied as an application specific integrated circuit (ASIC) orfield-programmable gate array (FPGA).

The control unit 210 may process raw data from the state sensing module220 and control elements 230 to detect motion events or interactionevents and then send processed events to the display device 110 insteadof the raw data, thereby reducing bandwidth over the communication link130. For example, the control unit 210 may obtain raw accelerometer,gyroscope, and/or magnetometer data form the state sensing module 220and apply a sensor fusion algorithm to determine a detected orientation(e.g., roll, pitch, and yaw values). Furthermore, the control unit 210may process raw touch data (e.g., capacitive or restive sensing) andperform processing such as analog-to-digital conversion and filtering togenerate touch detect events indicating detection of a touch and aposition or force of the touch which are sent to the display device 110.

Alternatively, the control unit 210 may send only raw data from thestate sensing module 220 and control elements 230 to the display device110 and the above-described processing may instead be performed on thedisplay device 110. In another embodiment, the control unit 210 may sendboth raw and processed event data to the display device 110. This may beuseful to enable different developers access to the specific data usefulfor a particular application.

In an embodiment, the other components of the pointing controller 120may be coupled with the control unit 210 via a data bus such as a serialperipheral interface (SPI) bus, a parallel bus, or an I2C bus.Furthermore, the components of the pointing controller 120 may generateinterrupt signals detectable by the control unit to enable low latencyresponses to user inputs.

FIG. 3 is a block diagram illustrating an embodiment of a display device110. In the illustrated embodiment, the display device 110 comprises aprocessor 310, a storage medium 320, a wireless interface 330, sensors340 including a camera 345, and output devices 350 including a display352 and an audio output device 354. Alternative embodiments may includeadditional or different components.

The wireless interface 330 communicates wirelessly with the pointingcontroller 120 via the communication link 130. In an embodiment, thewireless interface 330 may comprise for example, a Bluetooth interface,a WiFi link, or other wireless interface. The wireless interface 330 maycommunicate directly with the pointing controller 120 via a peer-to-peerconnection or may communicate with the pointing controller 120 via oneor more intermediate devices over a local area network, a wide areanetwork, or a combination thereof. In an embodiment, the wirelessinterface 330 may furthermore communicate with different devices otherthan the pointing controller 120 such as, for example, a mobile device,an IoT device, a network server, or other computing device.

In an embodiment, the wireless interface 330 may receive transmitinformation and commands to the pointing controller 120 to performactions such as controlling the pointing controller 120 to enter variouspower modes; requesting detailed information about the status of thepointing controller 120 such as battery status, temperature, or otherdiagnostic information; updating the firmware of the pointing controller120; activating a haptic actuator on the pointing controller 120according to a specific vibration pattern; or configuring the hapticactuator on the pointing controller 120 to respond directly to eventsdetected on the pointing controller 120, such as activating a particularbutton or control input on the pointing controller 120. The wirelessinterface 330 may furthermore periodically receive transmissions fromthe pointing controller 120 that include information such as IMU datafrom the state sensing module 220 of the pointing controller 120,control data from the control elements 230 of the pointing controller120, or battery information from the power sub-system 240 of thepointing controller 120.

The sensors 340 detect various conditions associated with the operatingenvironment of the display device 110. For example, a camera 345captures real-time video of the real-world environment within the viewof the display device 110, thus simulating the view seen by the user.Image data from the camera may be combined with virtual objects orinformation to present an augmented reality view of the world. Thecamera 345 may include a conventional image camera, a non-visual camerasuch as a depth camera or LIDAR camera, or a combination thereof.

The sensors 340 may also include a state sensing module 342 to sensemovement and orientation of the display device 110. The state sensingmodule 342 may include similar components and may operate similarly tothe state sensing module 220 of the pointing controller 120 discussedabove. For example, the state sensing module 342 may include one or moreof an IMU, a radio frequency (RF) transceiver, a Bluetooth directionalfinding module, a barometric sensor, an ultrasonic pulse transmitterand/or a microphone, or other sensors.

The sensors 340 may optionally include other sensors for detectingvarious conditions such as, for example, a location sensor (e.g., aglobal positioning system) or a temperature sensor.

The output devices 350 include various devices for providing outputsfrom the display device 110 for presenting the digital content. In anembodiment, the output devices 350 may include at least a display 352and an audio output device 354. In alternative embodiments, the outputdevices 350 may include additional output devices for providing feedbackto the user such as, for example, a haptic feedback device and one ormore light emitting diodes (LEDs). The audio output device 354 mayinclude one or more integrated speakers or a port for connecting one ormore external speakers to play audio associated with the presenteddigital content. The display device 352 comprises an electronic devicefor presenting images or video content such as an LED display panel, anLCD display panel, or other type of display. The display device 352 maybe configured in a manner to present the digital content in an immersiveway to present a simulation of a virtual or augmented realityenvironment. For example, the display device 352 may comprise astereoscopic display that presents different images to the left eye andright eye to create the appearance of a three-dimensional environment.In an embodiment, the display device 352 may present digital contentthat combines rendered graphics depicting virtual objects and/orenvironments with content captured from a camera 345 to enable anaugmented reality presentation with virtual objects overlaid on a realworld scene.

The storage medium 320 (e.g., a non-transitory computer-readable storagemedium) stores instructions executable by the processor 310 for carryingout functions attributed to the display device 110 described herein. Inan embodiment, the storage medium 320 includes a content presentationmodule 322 and a control processing module 324. In alternativeembodiments, the storage medium 320 may include additional or differentmodules.

The content presentation module 322 presents digital content via thedisplay 352 and/or the audio output device 354. The displayed contentmay comprise a virtual reality or augmented reality environment in athree-dimensional space. The displayed content may include virtualobjects which may be combined with real-world images captured by thecamera 345. The content presentation module 322 may adapt its contentbased on information received from the control processing module 324.

The control processing module 324 processes inputs received from thepointing controller 120 via the wireless interface 330 and generatesprocessed input data that may control the output of the contentpresentation module 322. For example, the control processing module 324may track the position of the pointing controller 120 within the virtualenvironment displayed by the content presentation module 322 based onthe received sensing data from the state sensing modules 220, 342.Furthermore, the control processing module 324 may process inputs fromthe control elements 230 to detect gestures performed with respect tothe control elements 230. The control processing module 324 maydetermine actions to perform with respect to virtual objects within thethree-dimensional environment based on the detected tracking of thepointing controller 120 and the detected gestures, and may cause thecontent presentation module 322 to update the presentation in responseto the actions. An example of a control processing module 324 isdescribed in further detail below.

FIG. 4 illustrates an example embodiment of a control processing module324. The control processing module 324 comprises a tracking module 402,an arm model 404, a gesture recognition module 406, an objectinteraction module 408, and a menu navigation module 410, and acalibration module 412. Alternative embodiments may include different oradditional modules.

The tracking module 402 infers the position and orientation of thepointing controller 120 relative to the user's head. In an embodiment inwhich the display device 110 is integrated into a head-mounted display,the position of the player's head can be directly inferred from theposition of the display device 110 because the display device 110 isfixed relative to the head position. Particularly, the tracking module402 determines an orientation of the pointing controller 120 based ondata (e.g., IMU or other data) from the state sensing module 220 andobtains position and orientation for the display device 110 relative tothe environment based on sensor data from the display device 110 (e.g.,IMU data from the state sensing module 342 and/or location trackingdata). The tracking module 402 then estimates the position of thepointing controller 120 relative to the environment based on theorientation of the pointing controller 120, the position and orientationof the display device 110, and an arm model 404 that models the pose ofthe user operating the pointing controller 120.

Based on the orientation and calculated position of the pointingcontroller 120, the tracking module 402 generates and continuouslyupdates a pointing vector originating at the position of the pointingcontroller 120 and extending in a direction corresponding to thedetected orientation. In the case of a pointing controller 120 worn onone or more finger, the pointing vector may extend along a central axisthrough the pointing controller 120 aligned with the fingers. Thepointing vector may be specified according to coordinates in the virtualenvironment displayed by the display device 110. Thus, the pointingvector provides a pointing direction with respect to the scene in thevirtual environment. The pointing vector may comprise, for example, apair of angles including a first angle relative to a ground plane (i.e.,a pitch angle) and a second angle relative to a vertical planeperpendicular to the ground plane (i.e. a yaw angle). In an embodiment,an orientation angle about the axis of the pointing vector (i.e., a rollangle) may also be tracked together with the pointing vector.

In an embodiment, the tracking module 402 may calculate a pointing conearound the pointing vector. Here, the cone originates at the pointingcontroller 120, has a central axis aligned with the pointing vector, andhas a diameter that increases with distance from the pointing controller120. The cone angle may be adjustable by the user, or developer, or maybe a hardcoded parameter. Additionally, the cone angle may beautomatically updated based on the context of a detected interactionwith an object. For example, when interacting with an environment with alarge number of objects close together, the cone angle may beautomatically reduced relative to an environment with a small number ofobjects that are far apart. The tracking module 402 updates the pointingvector, the point cone, and the orientation angle as the user moves thepointing controller 120.

In an embodiment, the tracking module 402 performs tracking based atleast in part on IMU data from the state sensing module 220 of thepointing controller 120.

In an embodiment, the tracking module 402 may perform tracking based atleast in part on atmospheric pressure data from a barometric sensor ofthe state sensing module 220 and/or the tracking device 110. Forsingle-ended sensing, a reference pressure value may be determinedcorresponding to a baseline height during a calibration process. Thetracking module 402 may subsequently obtains atmospheric pressurereadings and compute vertical offset from the baseline height based onthe change in pressure. In another embodiment, the tracking module 402estimates the vertical position of the pointing controller 120 usingdifferential sensing. In this embodiment, differential pressure iscomputed between the atmospheric pressure measurement obtained from thepressure sensor of the pointing controller 120 and an atmosphericpressure measurement obtained from a pressure sensor in an externaltracking device 110. Differential sensor measurements may be filtered tocompensate for natural atmospheric variations due to weather or otherfactors.

In another embodiment, the tracking module 402 may tracking the pointingcontroller 120 based in part on the relative RSSIs of wireless signalsreceived at both the pointing controller 120 and the tracking device110. The relative RSSIs may be used to estimate the distance between thetracking device 110 and the pointing controller 120. The distanceestimation may furthermore be improved by modelling the emission andsensitivity patterns of the antennae in the pointing controller 120 andthe tracking device 110 (or between multiple devices such as thepointing controller 120 an AR headset, and a mobile phone).

In another embodiment, the tracking module 402 may utilize Bluetoothdirectional finding data to obtain a position of the pointing controller120 relative to the tracking device 110 (e.g., using an array ofantennae in the pointing controller 120, tracking device 110, or both todetermine a direction of the radio waves). In one embodiment, roll andpitch components of the pointing direction are obtained from anintegrated IMU and yaw direction is obtained from Bluetooth directionalfinding. In another embodiment, roll, pitch, and yaw may be obtainedfrom other components of the pointing controller 120 and Bluetoothdirectional finding may be used to perform correction if there is adiscrepancy between other measurements. In another embodiment,statistical error properties may be determined (e.g., if the error isconsistent in some relative orientations) and determine informationabout the relative orientations based on the statistical errorproperties. In yet another embodiment, Bluetooth directional finding maybe utilized to determine multiple points on a rigid body (e.g., from twoor more antenna arrays within the AR viewer) and could additionallyestimate the distance between the pointing controller 120 and thetracking device 110 without necessarily relying on RSSI.

In further embodiments, the tracking module 402 may performing trackingbased on acoustic time of flight representing distance between anultrasonic pulse transmitter and microphone in the pointing controller120 and the tracking device 110. In an embodiment, the tracking module402 utilizes the estimated distance from the acoustic time of flight inthe tracking computing only when the detected distance is less than amaximum threshold distance (e.g., 1.5 meters). In another embodiment, adoppler shift effect may be detected to estimate a velocity of thepointing controller 120 relative to the tracking device 110. Here, thevelocity estimate may be utilized to compensate for error in a velocityestimate determined from the IMU data using dead reckoning. In anotherembodiment, the estimated distance based on acoustic time of flight maybe adjusted based on barometric data to compensate for the variation inthe speed of sound due to pressure differences.

Parameters of the arm model 404 may be determined in an initializationprocess and may be updated during tracking as will be described below.Input parameters of the arm model 404 may include, for example, a heightof the user, a standardized model of human proportions, a joint anglemodel, and various operating conditions that may change over time. Theheight of the user may be obtained manually from the user during theinitialization process in response to a user prompt requesting the userto enter the height. Alternatively, the height may be automaticallyestimated based on an estimated position of the display device 110relative to the ground. For example, a visual analysis may be performedon image data captured by the camera 345 of the display device 110 toestimate the height. Based on the user's height, the tracking module 402may perform a lookup in a pre-populated lookup table that maps theheight to the size of the hand, forearm, arm, shoulder, and neck basedon the standardized model of human proportions. Then, using the combineddimensions of the human body model and the detected orientation of thepointing controller 120, the tracking module 402 can apply the jointangle model to predict relative probabilities of various arm poses. Themost probable pose may be selected and the tracking module 402 mayestimate the position of the pointing controller 120 relative to thedisplay device 110 from the pose.

In an embodiment, additional information derived by the tracking module402 can be incorporated to more accurately predict the user's pose andeliminate undesirable results. For example, if the most likely predictedpose generated by the joint angle model predicts the user's armintersecting with a known location of a detected real-world object (animpossible result), the tracking module 402 may instead select the nextmost probably prediction which does not predict the arm intersectingwith a detected object.

In another embodiment, the tracking module 402 may utilize informationabout the user's current location and/or movement history to improve theaccuracy of the tracking by applying different parameters of the armmodel 404 in different contexts. For example, because people tend to usemore expansive gestures when outdoors than when indoors, the trackingmodule 402 may adjust the parameters of the arm model 404 depending onwhether the user is indoors or outdoors. The tracking module 402 maydetect whether the user is indoors or outdoors based on image analysisof captured images or other sensor data. In one technique, the trackingmodule 402 may determine whether the user is indoors or outdoors basedon the presence or absence of a ceiling plane within a certain distanceof the user (e.g., not more than 5 meters above the user), which may bedetected based on image analysis from captured images or from othersensors. In another embodiment, the tracking module 402 may measure thenumber of planar surfaces within a specified distance of the displaydevice 110 and determine that the user is indoors if the number exceedsa predefined threshold, and determine that the user is outdoors if thenumber does not exceed the threshold. In yet another embodiment, alocation sensor (e.g., a global-positioning system device) may be usedto determine the geographic location of the display device 110. Then,utilizing map data from a maps service, the tracking module 402 maydetermine that the user is indoors if the location coincides with abuilding or otherwise determine that the user is outdoors. In yetanother embodiment, a wireless signal strength of a wireless signalreceived by the display device 110 from a remote source (e.g., a GPSsignal or cellular data signal) may be used to determine whether theuser is indoors or outdoors. For example, when the wireless signalstrength is above a predefined threshold, the tracking module 402determines that the user is outdoors and when the wireless signalstrength is below the threshold, the tracking module 402 determines thatthe user is indoors. In yet another embodiment, the tracking module 402may perform an analysis of the brightness and/or wavelengths of locallight sources detected by the camera 345 to detect whether the user isindoors or outdoors. For example, high brightness lights around thecolor temperature of sunlight indicates that the user is likely to beoutdoors, while color temperatures consistent with light bulbs areindicative of the user being indoors.

In another embodiment, the parameters of the arm model 404 may beadapted based on whether the user is sitting or standing. Here, thetracking module 402 may determine if the user is sitting or standing bydetecting the height of the display device 110 relative to the ground asdescribed above and detecting whether the height is significantly belowthe user's standing height (e.g., above a threshold difference).

In an embodiment, the tracking module 402 may furthermore estimate afatigue level of the user to better predict a pointing direction. Here,the tracking module 402 may model a fatigue level by tracking an amountof time a user spends with their wrist about a certain threshold heightwith the level of fatigue increasing with time. Because a user mayprefer to keep the arm lower as fatigue increases, the parameters of thearm model 404 may cause the tracking module 402 to adjust the detectedpointing direction upward as the predicted fatigue level increases tocompensate for the expected drop in arm level. In an embodiment, thetracking module 402 may apply a machine-learning approach to model thefatigue characteristics of a particular user.

In an embodiment, the tracking module 402 may utilize image data fromthe camera 345 to sense the position of the pointing controller 120,hand, forearm, or arm. The tracking module 402 may utilize the sensedposition to re-calibrate the orientation and position of the pointingcontroller 120 relative to the display device 110 to account foraccumulated drift in the IMU data as described in further detail below.Furthermore, the tracking module 402 may apply the sensed position fromthe image data to improve the accuracy of the arm model 404 by updatingestimated parameters such as lengths of the arm or the predicted jointangles. The position of the arm may furthermore be estimated fromintegration of successive acceleration values from an accelerometer ofthe state sensing module 220.

In an embodiment, the tracking module 402 may furthermore utilizepositional information about the objects to infer the position of thepointing controller 120. For example, if an object is close by, it maybe inferred that the hand is in a relaxed position close to the body. Onthe other hand, if the object is far away, it may be inferred that thehand is in an outstretched position.

In cases where the display device 110 is not head-mounted (e.g., thedisplay device 110 is embodied as a handheld smart phone or tablet), theposition of the user's head may be unknown relative to the trackedposition of the display device 110. In this case, a calibrationtechnique may be applied to estimate the position of the user's headrelative to position of the display device 110. For example, in oneembodiment, a user interface on the display device 110 prompts the userto touch the display device 110 to the user's nose during a calibrationphase of an application. Alternatively, a camera of the display device110 may capture images of the user's face and a face tracking algorithmmay be applied to detect a central point of the face as corresponding tothe initial head position. In yet another embodiment, the verticalcomponent of the head position can be obtained manually by prompting theuser to enter his or her height, or the user's height may be obtainedfrom a linked health-tracking application or online service accessibleby the display device 110.

Once calibrated, the tracking module 402 estimates the verticalcomponent of the head position to be fixed in the three-dimensionalspace and vertical motion of the display device 110 may be tracked inthe three-dimensional space relative to this position. Alternatively, acamera 345 of the display device 110 may capture images that areprocessed to detect changes in terrain height. The user's estimated headposition may be updated based on the detected changes in terrain heightto be at an approximately fixed vertical position above the ground.

In the horizontal plane, the tracking module 402 may estimate the headposition to be a fixed horizontal offset from the tracked position ofthe display device 110. Thus, as the display device 110 moves androtates in the horizontal plane, the head position is estimated at afixed horizontal distance from the tracked position of the displaydevice 110.

A re-calibration may be performed if the user changes from a sittingposition to a standing position or vice versa. This change may beindicated manually by the user or may be automatically detected when anappropriate shift in the vertical position of the display device 110(and/or the pointing controller 120) is detected. For example, a camera345 of the display device 110 may capture images that may be processedto detect the height of the display device 110 relative to the groundand may be used to detect when the user sits down or stands up.

In an alternative embodiment, the user's head position may be assumed tobe completely fixed. Here, instead of estimating the head position inthe horizontal plane to track the horizontal motion of the displaydevice 110 at a fixed offset, the head position may instead be estimatedto stay at both a fixed vertical and horizontal position in thethree-dimensional space without tracking the motion of the displaydevice 110.

In yet another embodiment, a hybrid model may be used that combines theabove-described techniques. Here, the initial head location relative tothe display device 110 is first calibrated using the calibrationtechnique described above (e.g., by prompting the user to touch thedisplay device to the user's nose). The tracking module 402 mayinitially be set to a “stationary” mode in which it estimates the headposition to be maintained at a fixed position in three-dimensionalspace. Position of the display device 110 is tracked using the statesensing module 342 as it moves through the three-dimensional space and adistance between the display device 110 and the fixed estimated headposition is computed. When the distance between the estimated headlocation and the display device 110 exceeds a predefined activationradius (e.g., approximately equal to an estimated length of the user'sfully extended arm), the tracking module 402 switches to a “walking”mode. In the “walking” mode, the head position is instead estimated tobe a fixed distance behind the detected position of the display device110. When the display device 110 detects that its motion drops below athreshold speed and remains below the threshold speed for a thresholdtime period, the tracking module 402 switches back to the “stationarymode” in which the estimated position of the head becomes fixed and isno longer updated based on the position of the display device 110.

Alternatively, when in the “walking mode,” the head position relative tothe display device 110 may instead be estimated using a mass-spring ormass-spring-damper model. In this embodiment, the estimated distance ofthe head behind the detected position of the display device 110 may varyover time but stabilizes to a fixed position when the display device 110is stable for an extended time period. When the display device 110detects that the distance between the smartphone and the head dropsbelow a deactivation radius in this embodiment, the tracking module 402switches back to the “stationary” mode.

The gesture recognition module 406 detects gestures made by the userwith the pointing controller 120. Examples of gestures may include, forexample, moving the pointing controller 120 in a predefined motion orinteracting with the slider control interface 232 and/or the inter-digitbutton in a particular manner (e.g., single tapping, double tapping,maintaining prolonged contact, or a combination of interactions in aparticular pattern). Here, the pinching gesture may be detected when theusers squeezes the middle finger and index finger together (or otherfingers in contract with the pointing controller 120), thereby causingone or more fingers to be placed in contact with the inter-digit button234 on the pointing controller 120 with at least a threshold amount ofpressure for at least a threshold time period. The pinching gesture maybe released by separating the fingers or relieving the applied pressure.In some embodiments, the gesture recognition module 406 may capture aforce or a time period of the pinching gesture and may take differentactions depending on these captured parameters. The swiping gesture maybe detected when the user performs a swiping motion on the slidercontroller interface 232. This gesture may typically be performed withthe thumb (or other finger) on the hand wearing the pointing controller120 but could alternatively be performed by a finger on the oppositehand. Here, the swiping gesture may comprise a linear swiping gesturealong a line parallel to the one or more fingers holding the pointingcontroller 120 in either direction or along a line approximatelyperpendicular to the one or more fingers in either direction.Alternatively, the swiping gesture may comprise a radial swiping gestureperformed in a clockwise or counterclockwise direction about a referencepoint in a plane of the slider controller interface 232. In someembodiments, the gesture recognition module 408 may capture a force, avelocity, or a distance of the swiping gesture and take differentactions depending on these captured parameters. Other types of gesturesmay be also be recognized to perform various tasks.

The object interaction module 408 determines when the pointing vector orcone intersect an object in the scene being displayed on the displaydevice 110. For example, the object interaction module 408 storescoordinates representing the locations occupied by objects in the sceneand detects when the pointing vector or cone intersects coordinatesoccupied by one of the objects. The object interaction module 408 mayupdate a state associated with the object from a “free” state to a“selected” state in response to detecting the intersection. If thetracked pointing vector or cone is moved such that it no longerintersects the coordinates occupied by the object, the object isde-selected and transitions back to the “free” state.

In the case that the pointing vector or cone intersects multipleobjects, the object interaction module 406 may default to selecting theobject closest to the pointing controller 120. In another embodiment,the tracking module 402 may intelligently predict whether the user isintending to point to a near object (e.g., less than 5 meters away) or afar object (e.g., greater than 5 meters away) when the pointing vectorintersects multiple objects. For example, the tracking module 402 mayinfer that the user is intending to point to a far object when the armis detected to be substantially aligned with the user's eyes and the armis fully extended. The tracking module 402 may infer that the user isintending to point to a close object when the arm is bent and held at aposition below eye level. Additionally, the display device 110 maycalculate the average depth of the scene in the approximate directionwhere the user is facing and the average distances to virtual objectslocated in the approximate direction to better predict whether the useris intending to point to a near or far object.

In an embodiment, a visual indicator (e.g., a visual out glow or haloeffect, a shaded outline, a bounding box, or similar) is displayed inassociation with an object when it is in the selected state. Optionally,detailed information about the selected object may also be displayedsuch as, for example, an object identifier, distance from the pointingcontroller 120 to the selected object, a status of the object, etc.Furthermore, when an object is selected or de-selected, the objectinteraction module 406 may cause a haptic motor of the pointingcontroller 120 to vibrate to provide physical feedback of the action.The intensity, duration, or frequency of this vibration may provideadditional information about the object such as its weight (if known),its distance from the pointing controller 120, or whether it has anyspecial interactions available.

Upon detection of a pinching gesture when a virtual object is in aselected state (i.e., the user is pointing at the virtual object), thestate of the selected object may be transitioned from a selected stateto a “grabbed” state. When in the grabbed state, the object interactionmodule 408 updates the position of the virtual object to track movementof the pointing vector such that a user can move the object around thescene. Furthermore, the object interaction module 408 can rotate agrabbed object about the pointing vector in response to rotation of thepointing controller 120 or in response to a swiping gesture. The objectinteraction module 408 can also cause a grabbed object to be movedtowards or away from the pointing controller 120 along the pointingvector in response to the gesture recognition module 406 detecting aswiping gesture in a forward or backward direction. The objectinteraction module 408 may employ a motion model that determines how thegrabbed object responds to a swiping gesture of different length,velocity, or force. For example, in one configuration, a swiping gesturemoves the position of the virtual object forwards or backwards along thepointing vector in the direction of the swiping gesture. The swipedistance of the swiping gesture may control how far the object movesaccording to a linear or non-linear function, thus enabling precisesmall movements as well as large movements. In another configuration,the object interaction module 408 may set the velocity or momentum of agrabbed object according to the detected velocity of a swiping gesturebased on a linear or non-linear function. In this case, the object maycontinue moving after the swiping gesture is completed with the velocitydecaying over time until the object comes to rest, thus simulating“flinging” the object. The object interaction module 408 may calculatethe velocity of the object after the swiping gesture from a physicsmodel having parameters defining the object weight, friction, non-lineardamping effects, etc. Different objects may have different parameters.For example, larger objects may be “heavier,” thereby taking more effortto move. Upon release of the grabbing gesture, or upon an alternative“drop” gesture, the object interaction module 408 may release thevirtual object at its new location and return the virtual object to afree state in which its position is no longer updated based on thetracked pointing vector.

The menu navigation module 410 generates a menu presented on the displaydevice 352 in response to an object being selected or another action orcombination of actions such as, for example, the slider controlinterface being tapped while the object is selected. The menu may allowa user to view and/or modify various object-specific attributes such asa brightness or color of an object, a transparency of an object, aweight of an object, or other attribute. In an embodiment, a wheel orslider interface may be displayed to allow a user to quickly modifyparameters using a swiping gesture.

In an embodiment, the menu navigation module 410 may also generate amenu when no object is selected in response to detecting a menu gesture(e.g., a tap of the slider control interface). The menu may enable theuser to select actions such as creating a new object from a range ofoptions. The menu may provide a hierarchical selection process (e.g.,first enabling selection of a category of objects and then enablingselection of a specific object within the category). The created objectmay then be placed into a grabbed state using the gestures describedabove and placed in the scene as desired.

In an embodiment, the menu may be presented as a radial interfaceappearing around the hand of the user wearing the pointing controller120. Alternatively, the menu interface may be presented in front of theuser or near a selected object. In an embodiment, selecting an item onthe menu may trigger haptic feedback on the pointing controller 120. Themenu navigation module 410 may detect selection of options in the radialmenu by, for example, detecting that the pointing vector or coneintersects coordinates of the desired option, and then performing apredefined selection gesture (e.g., tapping the slider controlinterface). Alternatively, selected items in the menu may be changed byperforming a swiping gesture to rotate the menu, thereby changing theselected option. In an embodiment, the menu may “snap” to the closestmenu option following the swiping gesture. The presently selected optionmay be visually indicated by highlighting the option in the visualpresentation. Another predefined gesture (e.g., pointing downwards oraway from the menu) enables the user to navigate backwards in the menuhierarchy or to dismiss the presentation of the menu. Alternatively orin addition, a “back” or “up” menu option may enable navigationbackwards in the menu hierarchy.

The calibration module 412 performs a calibration process to calibratethe pointing controller 120 in order to initialize the relative positionand orientation of the pointing controller 120 to a position andorientation in the virtual environment presented by the contentpresentation module 362. The roll and pitch of the pointing controller120 can be detected from an IMU of the state sensing module 220 with thedetected direction of gravity (as sensed by the IMU of the state sensingmodule 220) mapped to a downward direction along the vertical axis ofthe virtual environment. The horizontal direction (yaw) of the pointingcontroller 120 can be sensed relative to a reference direction duringcalibration using a variety of techniques. This reference direction maybe aligned with the forward looking direction of the display device 110during the calibration process.

In one embodiment, a magnetometer in the state sensing module 220 of thepointing controller 120 may operate as a compass to detect magneticNorth. A magnetometer in the display device 110 may similarly detectmagnetic North and the calibration module 412 may perform a calibrationto align these reference directions.

In another embodiment, a location and orientation of the pointingcontroller 120 can be detected based on an image (visual or depth)analysis performed on one or more images captured by a camera of thedisplay device 110. The calibration module 412 may then perform acalibration using the detected IMU data and the determined location andposition from the image data.

In another embodiment, the calibration module 412 performs thecalibration by directing a user to point directly ahead and then performa specific gesture (e.g., a double tap on the slider control interface232 while also pressing the inter-digit button 234). Unintentionalactions may be rejected by ignoring this gesture when the pointingcontroller 120 is not approximately horizontal, as detected by the statesensing module 220, when the gesture is detected. The calibration module412 may then set the direction as a reference direction mapped to thestraight ahead direction in the virtual environment.

In another embodiment, the calibration may be performed by directing theuser to point to a small number of real world objects at locations thatare known or can be detected from images captured by the imageprocessing device. Here, in order to determine when a user is pointingat a target, the pitch of the pointing controller 120 shouldapproximately match the pitch vector to the target and additionally thepointing controller 120 should be held approximately still. Thecalibration module 412 may then perform a calibration using the knownpositions of these objects in the virtual environment. In an embodiment,this calibration stage could be performed as part of a user tutorial totrain the user how to use the pointing controller 120 to interact withobjects.

In one particular embodiment, the display device 110 is configured todisplay a target object located far away (to minimize perspectiveerror), and a prompt is displayed to direct the user to point at thetarget object. The calibration module 412 detects when the pointingcontroller 120 is approximately stationary (e.g., by detecting that theangular rotation rate is below a pre-determined threshold value), anddetermines that the current pointing direction to be the direction ofthe target object. In an embodiment, the display device 110 may providea visual indicator to guide the user through the calibration. Forexample, after the display device 110 may display a visual indicatorthat starts to “fill up” (e.g., a progress bar animation, change in sizeof the visual indicator, etc.) when the pointing controller 120 has beenstationary for a short period of time, and additionally the pitch of thepointing controller 120 approximately matches the pitch of the targetrelative to the user. During this time, the calibration module 412records the detected orientation of the pointing controller 120 anddetermines the difference in yaw (heading) of the pointing controller120 relative to the yaw of the display device 110. If the user moves thepointing controller 120 during the calibration period or the pitch fallsoutside of an accepted range, the progress is reset. Once thecalibration process is complete, the target object may be dismissed fromthe display and the calibration value is stored. The above-describedcalibration process can be repeated multiple times with target objectsat different yaws (headings) and/or pitches, to improve the accuracy.The calibration process can additionally be performed with targetobjects at different depths, or by instructing the user to remain facingin one direction but placing targets at the periphery of their vision,to improve the calibration.

In another embodiment, the display device 110 may display an outline ofan image of the pointing controller 120 and direct the user to place thedisplay device 110 on a flat horizontal surface, and then place thepointing controller 120 on the display screen of the display device 110aligned with the outline of the image. The calibration module 412detects when the pitch of the pointing controller 120 is below athreshold angle and when both the display device 110 and the pointingcontroller 120 are held still for a threshold time period. When theseconditions are detected, the calibration module 412 stores thedifference between the detected yaw of the pointing controller 120 andthe display device 110 as a calibration offset. In operation, thiscalibration offset is subtracted from yaw measurements of the pointingcontroller 120.

Once calibrated, the calibration module 412 may enable the user toverify the calibration by displaying a test target and enabling the userto ensure that calibration has been performed correctly. In anotherembodiment, the calibration module 412 may perform continuousauto-calibration during use. The calibration module 412 may store a setof focal points associated with different types of objects. Here, thefocal point of an object represents a point on an object of a givenobject type that a user is likely to have a preference for pointing atwhen the user attempts to point at that object type. For simple shapes,the focal point may be calculated by computing the center of mass of theobject assuming uniform density. For complex shapes, the focal point maybe calculated by computing to the center of mass of the convex hull that“wraps” the shape. For other types of functional objects, the focalpoint may be manually assigned based on the object type or may belearned for different types of objects using an external trackingsystem. For these types of objects, the focal point may be biasedtowards the point of interaction. For example, for a computer monitor,the focal point may correspond to a center of the screen, neglecting thestand. For a bicycle, the focal point may be biased from the center masstowards a point closer to the handlebars. For a piano, the focal pointmay be biased from the center of mass towards a point closer to thekeys. For a door, the focal point may be biased from the center of masstowards a point closer to the handle/push plate.

In an embodiment, the focal point of an object may change with distance.For example, from a far distance, people will be likely to point at thecenter of the object, regardless of the object's purpose. Thus, in anembodiment, the center of mass of an object may be used as the focalpoint when the object is greater than a predefined distance away.However, when closer to the object, people may tend towards the point ofinteraction on functional objects, but continue to point at the centerof mass for simpler objects. Thus, in an embodiment, a pre-assignedfocal point based on the object type may be used when the object iscloser than the predefined distance. Each time an object is selected,the calibration module 412 may determine the difference between thedirection of the focal point of the object and the actual pointingdirection of the pointing controller 120 at the instant the object isselected. If these differences (and in particular, the yaw component)are consistently biased in one direction, the calibration module 412 maydetect a miscalibration. In an embodiment, the miscalibration is onlydetected once a sufficient confidence level is reached such as, forexample, after the yaw component of a number of object selections havebeen consistently biased in one direction. Upon detecting amiscalibration, the calibration module 412 can adjust the calibrationparameter to correct the miscalibration. This re-calibration may beperformed instantaneously or gradually applied over several seconds (toprevent the user seeing any “jumps”).

FIG. 5 is a flowchart illustrating an example embodiment of a processfor interacting with virtual objects displayed by a display device 110using a pointing controller 120. A controller processing module 324obtains 502 IMU data from the pointing controller 120. The controllerprocessing module 324 tracks 504 a pointing vector based on the IMU dataand a stored arm model. The controller processing module 324 detects 506an intersection of the pointing vector with coordinates occupied by avirtual object and places the virtual object in a selected state. Whenin the selected state, the controller processing module 324 detects 508a first interaction (e.g., a pinching gesture) with the pointingcontroller 120 and places the virtual object in a grabbed state. Thecontroller processing module 324 causes 510 a position of the virtualobject to track movement of the pointing controller 120, based on theIMU data, while the virtual object is in the grabbed state. In responseto detecting 512 a second interaction with the pointing controller 120(e.g., releasing the pinching gesture), the controller processing module324 causes the virtual object to be placed into a free state such thatits location no longer updates with movement of the pointing controller120. Thus, the described process enables interactions with virtualobjects in a manner that it is intuitive and simple to learn.

FIG. 6A-E graphically illustrate examples of interactions of a pointingcontroller 120 in a three-dimensional virtual environment 600. While theembodiments of FIGS. 6A-E illustrate a pointing controller 120 having aring form factor, the interactions can similarly be executed using apointing controller 120 with different form factors including thosedescribed herein. FIG. 6A illustrates tracking of a pointing vector in athree-dimensional space. Here, the display 232 presents a cursor 602 asa visual indicator of the pointing vector which comprises a line fromthe pointing controller 120 to the cursor 602. FIG. 6B illustratesselection of a virtual object 606 when the pointing vector intersectscoordinates occupied by the virtual object 606. Here, a visual selectionindicator 604 is presented to indicate that the object 606 is in aselected state. FIG. 6C illustrates the user performing a pinchinggesture to cause the virtual object 606 to be placed into a grabbedstate. FIG. 6D illustrates the user moving the hand while performing thepinching gesture. The motion of the pointing controller 120 is trackedand the position of the virtual object 606 in the grabbed state isupdated to track the motion of the pointing controller 120, thusenabling the user to move the virtual object 606 through the virtualenvironment. FIG. 6E illustrates the user performing a swiping gesturewhen the virtual object 606 is in a grabbed state to cause the virtualobject 606 to move along the pointing vector in a direction towards thepointing controller 120. Thus, the user can control the distance of theobject in the virtual environment by use of the swiping gesture.

FIG. 7 illustrates an example of a pointing controller 720 in a ringform factor. The pointing controller 720 comprises an interior cutout710 suitable to be worn on a finger (e.g., the index finger of the righthand). The outer surface of the pointing controller 720 includes aconcave edge 702 on one side shaped appropriately to substantiallyconform to the side of an adjacent finger (e.g., the middle finger) tothe finger wearing the ring. A convex edge 704 is formed on the sideopposite the concave edge 702 and may be positioned adjacent to a thumbwhen the pointing controller 720 is worn on the index finger. Flat edges706 connect the convex edge 704 and the concave edge 702 along the topand bottom surfaces respectively. Collectively, the convex edge 704 andflat edges 706 are oriented to form an approximately “horseshoe” shape.The flat edges 706 furthermore meet the concave edge 702 to formrespective corners 712. This form factor enables the pointing controller720 to be worn comfortably and securely on the index finger whileenabling access to controls on the concave edge 702 using the middlefinger and the convex edge 704 using the thumb. The ring can be worn oneither the right hand or the left hand by merely rotating it 180degrees.

FIG. 8 illustrates an embodiment of an internal layout of the pointingcontroller 720. The pointing controller 720 includes a flat board 802(e.g., a rigid printed circuit board) having a shape approximatelyconforming to the above-described cross-section of the pointingcontroller 720. In an embodiment, the flat board 802 includeselectronics such as the power sub-system 240, a haptic driver of theoutput devices 260 to drive a vibration motor 810, and the state sensingmodule 220. A riser board 804 (e.g., a rigid printed circuit board) isoriented substantially perpendicular to the flat printed circuit board802 and positioned along one of the flat edges 706 adjacent to arespective corner 712. The riser board 804 may include the wirelessinterface 250, the output devices 260, the control elements 230, and thestate sensing module 220 (including, for example, an IMU, barometricsensor, or other sensors). The riser board 804 may be coupled to theflat board 802 via a right-angle board-to-board connector or a solderededge connection. The battery 806 is coupled to the flat board 802 alongthe opposite flat edge 706 from the riser board 804 adjacent to theopposite corner 712. The touch board 808 wraps around the convex edge704 from the riser board 804 towards the battery 806. The touch board808 includes the touch sensitive pad of the slider control interface232. A vibration motor 810 is coupled to an end of the touch board 808adjacent to the battery 806. A force sensor 812 utilized for theinter-digit button 234 is positioned along the concave edge 702 andcouples to the touch board 808 via a flexible cable 814.

FIG. 9 illustrates an internal case 900 for enclosing electroniccomponents of the pointing controller 720. For structural support, thevibration motor 910 and force sensor 912 are supported by the internalcase 900.

In alternative embodiments, other shapes and layouts are possible for apointing controller 720 in a ring form factor. For example, in onealternative embodiment, a flex-rigid construction technique may be usedto create a similar shape using a single printed circuit board thatincludes both rigid and flexible section. Here, a flexible board portionmay be used to connect between a flat board portion and a riser boardportion extended perpendicular from the flat board portion. In anotherembodiment, a stack of thin boards may be included to mount additionalelectronics while optimizing the available physical space. For example,a second flat board having a similar form factor as the flat board 802may be placed on the opposite side of the pointing controller 720 on aplane substantially parallel to the plane of the flat board 802.

FIG. 10 illustrates a pointing controller 1020 held between an indexfinger and a middle finger. In use, the user may point the index andmiddle fingers in a direction of interest to perform actions in thevirtual environment such as selecting virtual objects, moving virtualobjects, or navigating through virtual menus. The pointing controller1020 detects motion data from the IMU that enables the pointingdirection to be detected for enabling the above-described interactions.

FIG. 11 illustrates an example form factor of the pointing controller1020. The pointing controller 1020 comprises a chassis having a topplate 1114 and a bottom plate 1116 in planes substantially parallel toeach other. The top plate 1114 and the bottom plate 116 are coupled by aconnecting member 1118 centered along an axis perpendicular to the topplate 1114 and the bottom plate 1116 and intersecting approximate centerpoints of the top plate 1114 and the bottom plate 1116. The connectingmember 1118 may join the top plate 1114 and the bottom plate 1116 alongcurved surfaces to form a first finger pad 1110 between the top plate1114 and the bottom plate 1116 on a first side of the pointingcontroller 120, and to form a second finger pad 1112 between the topplate and the bottom plate 1116 on a second side of the pointingcontroller 120. The first and second finger pads 1110, 1112 eachcomprise concave surfaces suitable for partially encircling adjacentfingers of a user (e.g., an index finger and middle finger) in themanner shown in FIG. 10 . The finger pads 1110, 1112 may be coated with,or constructed of, a tactile surface such as molded silicone to providethe user with a comfortable feel.

FIG. 12 illustrates an embodiment of an internal layout of the pointingcontroller 1020 with the chassis removed. The pointing controller 1020includes a first finger pad 1210 and a second finger pad 1212 eachcomprising a substantially open cup-shaped concave surface with the openends oriented in opposite directions. An inter-digit button 1214 (e.g.,a force sensor, strain gauge, capacitive deflection mechanism, orinductive coil detecting metal surface) is positioned between the firstfinger pad 1210 and the second finger pad 1212. When the first fingerpad 1210 and the second finger pad 1212 are squeezed together, the padsapply pressure to the force sensor 1214, which measures the appliedpressure. A battery 1202 may be positioned along the top plate 1114 ofthe pointing controller 120 to provide power to various components ofthe pointing controller 120. A haptic motor 1204 may be placed under thebattery 1202 in a central area of the top plate 1114. A touch-sensitivesurface 1208 is positioned along the bottom plate 1116 to detect a touchlocation and may be utilized in the slider control interface 232. In anembodiment, the touch-sensitive elements may be mounted on the bottom ofthe main PCB 1206, which is bonded to plastic or glass. The main printedcircuit board (PCB) 1206 may also be placed along the bottom plate 1116inside of the touch-sensitive surface 1208. The PCB 1206 may include thecontrol unit 210, wireless interface 250, and other control elements ofthe pointing controller 120. The PCB 1206 may furthermore include thestate sensing module 220 (including, for example, an IMU, barometricsensor, or other sensors). In an embodiment, a flexible PCB (not shown)connects the battery 1202 and haptic motor 1204 to the main PCB 1206 andmay also include status LEDs visible through the top surface of the topplate 1114.

FIG. 13 illustrates a form factor of the docking station 140. Thedocking station 140 may include an enclosure with a molded cut-out thatmay be substantially form-fitted with the pointing controller 1120.

ADDITIONAL CONSIDERATIONS

As illustrated, the pointing controller 120 and display device 110enable intuitive interactions with virtual objects through movement ofthe pointing controller 120 and a few simple gestures. The pointingcontroller 120 thus provides a lightweight and easy to operatecontroller for interacting with a virtual or augmented realityenvironment. Furthermore, the pointing controller 120 enablesinteractions without requiring large gestures with raised armsnecessitated by conventional controllers.

In alternative embodiments, one or more components of the controlprocessing module 324 may be implemented on the pointing controller 120instead of on the display device 110. For example, in an embodiment, thefunctions of the tracking module 402 and gesture recognition module 406may instead be performed by the pointing controller 120. In thisembodiment, the tracking results and the detected gestures may becommunicated directly to the display device 110 instead of communicatingthe raw IMU and control element data. Alternatively, in otherembodiments, one or more components of the control processing module 324may be implemented on a separate communicatively coupled device. Forexample, a mobile device, personal computer, or game console may receiveraw IMU and control element data from the pointing controller 120,perform the functions of the control processing module 324 to processthe raw data, and send processed control information to a display device110 to cause the display device 110 to update the display on the displaydevice 352. In yet another embodiment, one or more components of thecontrol processing module 324 may be performed on a remote server (e.g.,a cloud server) communicatively coupled to the pointing controller 120and the display device 110.

Throughout this specification, some embodiments have used the expression“coupled” along with its derivatives. The term “coupled” as used hereinis not necessarily limited to two or more elements being in directphysical or electrical contact. Rather, the term “coupled” may alsoencompass two or more elements that are not in direct contact with eachother, but yet still co-operate or interact with each other.

Likewise, as used herein, the terms “comprises,” “comprising,”“includes,” “including,” “has,” “having” or any other variation thereof,are intended to cover a non-exclusive inclusion. For example, a process,method, article, or apparatus that comprises a list of elements is notnecessarily limited to only those elements but may include otherelements not expressly listed or inherent to such process, method,article, or apparatus.

In addition, use of the “a” or “an” are employed to describe elementsand components of the embodiments herein. This is done merely forconvenience and to give a general sense of the invention. Thisdescription should be read to include one or at least one and thesingular also includes the plural unless it is obvious that it is meantotherwise.

Finally, as used herein any reference to “one embodiment” or “anembodiment” means that a particular element, feature, structure, orcharacteristic described in connection with the embodiment is includedin at least one embodiment. The appearances of the phrase “in oneembodiment” in various places in the specification are not necessarilyall referring to the same embodiment.

Upon reading this disclosure, those of skill in the art will appreciatestill additional alternative structural and functional designs for thedescribed embodiments as disclosed from the principles herein. Thus,while particular embodiments and applications have been illustrated anddescribed, it is to be understood that the disclosed embodiments are notlimited to the precise construction and components disclosed herein.Various modifications, changes and variations, which will be apparent tothose skilled in the art, may be made in the arrangement, operation anddetails of the method and apparatus disclosed herein without departingfrom the scope.

1. A method for controlling interactions with virtual objects using apointing controller, the method comprising: obtaining sensor data fromstate sensing module of the pointing controller, the sensor dataincluding barometric sensing data; estimating a height of the pointingcontroller based on the barometric sensing data; tracking movement of apointing vector through a three-dimensional virtual space based on theestimated height and a stored arm model; detecting an intersection ofthe pointing vector with coordinates occupied by a virtual object in thethree-dimensional virtual space to place the virtual object in aselected state; detecting a first interaction with the pointingcontroller while the virtual object is in the selected state; placingthe virtual object in a grabbed state in response to the firstinteraction; causing position of the virtual object to track movement ofthe pointing controller while the virtual object is in the grabbedstate; detecting a second interaction with the virtual object while thevirtual object is in the grabbed state; placing the virtual object in afree state in response to the second interaction; and causing thevirtual object to stop tracking movement of the pointing vector inresponse to the second interaction.
 2. The method of claim 1, whereindetecting the first intersection comprises: generating a pointing conehaving a central axis aligned with the pointing vector, and originproximate to a location of the pointing controller, and a radius thatincreases with distance from the origin of the pointing vector; anddetecting the intersection with the pointing vector responsive to thepointing cone overlapping with coordinates occupied by the virtualobject.
 3. The method of claim 1, wherein the first interactioncomprises a pinching gesture, the pinching gesture detected in responseto detecting a touch with an inter-digit button of the pointingcontroller on a first side of the ring controller.
 4. The method ofclaim 1, wherein the second interaction comprises a release of thepinching gesture, the release of the pinching gesture detected inresponse to detecting a release of the touch with the inter-digit buttonof the pointing controller.
 5. The method of claim 1, furthercomprising: while the virtual object is in the grabbed state, detectinga swiping gesture on a slider control interface of the pointingcontroller; and causing the virtual object to move along the pointingvector in a direction associated with the swiping gesture.
 6. The methodof claim 1, wherein tracking the movement of the pointing vectorcomprises: detecting whether the pointing controller is indoors oroutdoors; adjusting parameters of the arm model depending on whether thepointing controller is indoors or outdoors.
 7. The method of claim 1,wherein tracking the movement of the pointing vector comprises:detecting whether a user of the pointing controller is sitting orstanding; and adjusting parameters of the arm model depending on whetherthe user of the pointing controller is sitting or standing.
 8. Themethod of claim 1, wherein tracking the movement of the pointing vectorcomprises: detecting a fatigue level associated with a user of thepointing controller; and adjusting parameters of the arm model dependingon the detected fatigue level.
 9. A non-transitory computer-readablestorage medium storing instructions for controlling interactions withvirtual objects using a pointing controller, the instructions whenexecuted by a processor causing the processor to perform stepscomprising: obtaining sensor data from state sensing module of thepointing controller, the sensor data including barometric sensing data;estimating a height of the pointing controller based on the barometricsensing data; tracking movement of a pointing vector through athree-dimensional virtual space based on the estimated height and astored arm model; detecting an intersection of the pointing vector withcoordinates occupied by a virtual object in the three-dimensionalvirtual space to place the virtual object in a selected state; detectinga first interaction with the pointing controller while the virtualobject is in the selected state; placing the virtual object in a grabbedstate in response to the first interaction; causing position of thevirtual object to track movement of the pointing controller while thevirtual object is in the grabbed state; detecting a second interactionwith the virtual object while the virtual object is in the grabbedstate; placing the virtual object in a free state in response to thesecond interaction; and causing the virtual object to stop trackingmovement of the pointing vector in response to the second interaction.10. The non-transitory computer-readable storage medium of claim 9,wherein detecting the first intersection comprises: generating apointing cone having a central axis aligned with the pointing vector,and origin proximate to a location of the pointing controller, and aradius that increases with distance from the origin of the pointingvector; and detecting the intersection with the pointing vectorresponsive to the pointing cone overlapping with coordinates occupied bythe virtual object.
 11. The non-transitory computer-readable storagemedium of claim 9, wherein the first interaction comprises a pinchinggesture, the pinching gesture detected in response to detecting a touchwith an inter-digit button of the pointing controller on a first side ofthe ring controller.
 12. The non-transitory computer-readable storagemedium of claim 9, wherein the second interaction comprises a release ofthe pinching gesture, the release of the pinching gesture detected inresponse to detecting a release of the touch with the inter-digit buttonof the pointing controller.
 13. The non-transitory computer-readablestorage medium of claim 9, further comprising: while the virtual objectis in the grabbed state, detecting a swiping gesture on a slider controlinterface of the pointing controller; and causing the virtual object tomove along the pointing vector in a direction associated with theswiping gesture.
 14. The non-transitory computer-readable storage mediumof claim 9, wherein tracking the movement of the pointing vectorcomprises: detecting whether the pointing controller is indoors oroutdoors; adjusting parameters of the arm model depending on whether thepointing controller is indoors or outdoors.
 15. The non-transitorycomputer-readable storage medium of claim 9, wherein tracking themovement of the pointing vector comprises: detecting whether a user ofthe pointing controller is sitting or standing; and adjusting parametersof the arm model depending on whether the user of the pointingcontroller is sitting or standing.
 16. The non-transitorycomputer-readable storage medium of claim 9, wherein tracking themovement of the pointing vector comprises: detecting a fatigue levelassociated with a user of the pointing controller; and adjustingparameters of the arm model depending on the detected fatigue level. 17.A computing device for controlling interactions with virtual objectsusing a pointing controller, the computing device comprising: aprocessor; and a non-transitory computer-readable storage medium storinginstructions for controlling interactions with virtual objects using apointing controller, the instructions when executed by a processorcausing the processor to perform steps comprising: obtaining sensor datafrom state sensing module of the pointing controller, the sensor dataincluding barometric sensing data; estimating a height of the pointingcontroller based on the barometric sensing data; tracking movement of apointing vector through a three-dimensional virtual space based on theestimated height and a stored arm model; detecting an intersection ofthe pointing vector with coordinates occupied by a virtual object in thethree-dimensional virtual space to place the virtual object in aselected state; detecting a first interaction with the pointingcontroller while the virtual object is in the selected state; placingthe virtual object in a grabbed state in response to the firstinteraction; causing position of the virtual object to track movement ofthe pointing controller while the virtual object is in the grabbedstate; detecting a second interaction with the virtual object while thevirtual object is in the grabbed state; placing the virtual object in afree state in response to the second interaction; and causing thevirtual object to stop tracking movement of the pointing vector inresponse to the second interaction.
 18. The computing device of claim17, wherein detecting the first intersection comprises: generating apointing cone having a central axis aligned with the pointing vector,and origin proximate to a location of the pointing controller, and aradius that increases with distance from the origin of the pointingvector; and detecting the intersection with the pointing vectorresponsive to the pointing cone overlapping with coordinates occupied bythe virtual object.
 19. The computing device of claim 17, wherein thefirst interaction comprises a pinching gesture, the pinching gesturedetected in response to detecting a touch with an inter-digit button ofthe pointing controller on a first side of the ring controller.
 20. Thecomputing device of claim 17, wherein the second interaction comprises arelease of the pinching gesture, the release of the pinching gesturedetected in response to detecting a release of the touch with theinter-digit button of the pointing controller.
 21. The computing deviceof claim 17, further comprising: while the virtual object is in thegrabbed state, detecting a swiping gesture on a slider control interfaceof the pointing controller; and causing the virtual object to move alongthe pointing vector in a direction associated with the swiping gesture.22. The computing device of claim 17, wherein tracking the movement ofthe pointing vector comprises: detecting whether the pointing controlleris indoors or outdoors; adjusting parameters of the arm model dependingon whether the pointing controller is indoors or outdoors.
 23. Thecomputing device of claim 17, wherein tracking the movement of thepointing vector comprises: detecting whether a user of the pointingcontroller is sitting or standing; and adjusting parameters of the armmodel depending on whether the user of the pointing controller issitting or standing.
 24. The computing device of claim 17, whereintracking the movement of the pointing vector comprises: detecting afatigue level associated with a user of the pointing controller; andadjusting parameters of the arm model depending on the detected fatiguelevel.
 25. A pointing controller comprising: a ring structured to beworn on a first finger, the ring having a concave outer surface on afirst side of the ring shaped to substantially conform to a secondfinger adjacent to the first finger; a state sensing module including aninertial measurement unit and a barometric sensor, the state sensingmodule to obtain sensing data associated with an environment of thering; a wireless interface to communicate the sensing data to acomputing device; an inter-digit button on the concave outer surface ofthe ring, the inter-digit button comprising a force sensor to detectsqueezing of the ring between the first and second fingers; and a sliderinterface on a convex surface on a second side of the ring opposite theconcave surface, the slider interface comprising a touch sensor todetect a touch to the slider interface by a third finger.
 26. Thepointing controller of claim 25, wherein the ring comprises: a flatprinted circuit board internal to the ring having an interior cutout; ariser printed circuit board internal to the ring substantiallyperpendicular to the flat printed circuit board; and a touch printedcircuit board internal to the ring perpendicular to the flat printedcircuit board and positioned interior to the convex surface of thesecond side of the ring, the touch printed circuit board comprising thetouch sensor.
 27. The pointing controller of claim 26, furthercomprising: a flexible cable coupled to the touch printed circuit boardand including the force sensor positioned interior to the concave outersurface of the first side of the ring.
 28. The pointing controller ofclaim 25, wherein the flat printed circuit board comprises a powersub-system, a haptic driver, a vibration motor, and an inertialmeasurement unit mounted thereon.
 29. The pointing controller of claim25, wherein the riser printed circuit board comprises the wirelessinterface, an output device, and an interconnect for the sliderinterface.
 30. An augmented reality system for interacting with virtualobjects comprising: a display device for displaying one or more virtualobjects; and a pointing controller for controlling a pointing vector forinteracting with the one or more virtual objects, the pointingcontroller comprising: a ring structured to be worn on a first finger,the ring having a concave outer surface on a first side of the ringshaped to substantially conform to a second finger adjacent to the firstfinger; a state sensing module including an inertial measurement unitand a barometric sensor, the state sensing module to obtain sensing dataassociated with an environment of the ring; a wireless interface tocommunicate the sensing data to a computing device; an inter-digitbutton on the concave outer surface of the ring, the inter-digit buttoncomprising a force sensor to detect squeezing of the ring between thefirst and second fingers; and a slider interface on a convex surface ona second side of the ring opposite the concave surface, the sliderinterface comprising a touch sensor to detect a touch to the sliderinterface by a third finger.
 31. A pointing controller to be heldbetween a first and second finger, the pointing controller comprising: achassis having a top plate and a bottom plate in substantially parallelplanes; a state sensing module including an inertial measurement unitand a barometric sensor, the state sensing module to obtain sensing dataassociated with an environment of the ring; a wireless interface tocommunicate the sensing data to a computing device; a first finger padbetween the top plate and the bottom plate, the first finger padcomprising a first concave surface on a first side of the pointingcontroller, the first finger pad structured to partially encircle thefirst finger; and a second finger pad between the top plate and thebottom plate, the second finger pad comprising a second concave surfaceon a second side of the pointing controller opposite the first side, thesecond finger pad structured to partially encircle the second finger; aninter-digit button between the first finger pad and the second fingerpad, the inter-digit button comprising a force sensor to detectsqueezing of the pointing controller between the first and secondfingers; and a slider interface integrated with the first parallelplate, the slider interface comprising a touch sensor to detect alocation of a touch on the first parallel plate.
 32. The pointingcontroller of claim 31, further comprising: a connecting member centeredalong an axis substantially perpendicular to the parallel planes of thetop plate and the bottom plate, the connecting member joining the topplate and the bottom plate by respective curved surfaces on oppositesides of the axis, the curved surfaces corresponding to the first andsecond finger pads.
 33. The pointing controller of claim 31, furthercomprising: an inertial measurement unit to detect a change in positionor orientation of the pointing controller.
 34. The pointing controllerof claim 31, wherein the first plate comprises a printed circuit boardinterior to the chassis and including electronics of the pointingcontroller.
 35. The pointing controller of claim 31, wherein the secondplate comprises a battery and a haptic motor.
 36. An augmented realitysystem for interacting with virtual objects comprising: a display devicefor displaying one or more virtual objects; and a pointing controllerfor controlling a pointing vector for interacting with the one or morevirtual objects, the pointing controller to be held between a first andsecond finger, the pointing controller comprising: a chassis having atop plate and a bottom plate in substantially parallel planes; a statesensing module including an inertial measurement unit and a barometricsensor, the state sensing module to obtain sensing data associated withan environment of the ring; a wireless interface to communicate thesensing data to a computing device; a first finger pad between the topplate and the bottom plate, the first finger pad comprising a firstconcave surface on a first side of the pointing controller, the firstfinger pad structured to partially encircle the first finger; and asecond finger pad between the top plate and the bottom plate, the secondfinger pad comprising a second concave surface on a second side of thepointing controller opposite the first side, the second finger padstructured to partially encircle the second finger; an inter-digitbutton between the first finger pad and the second finger pad, theinter-digit button comprising a force sensor to detect squeezing of thepointing controller between the first and second fingers; and a sliderinterface integrated with the first parallel plate, the slider interfacecomprising a touch sensor to detect a location of a touch on the firstparallel plate.